Modern computer systems are being used to solve an ever increasing range of complex problems. The use of computers to perform tasks normally associated with human reasoning and cognition is known as artificial intelligence. As the capabilities of computers expand, they are increasingly being used to perform tasks in the field of artificial intelligence. However, although computer hardware to perform complex tasks is available, it is very difficult and time-consuming to write artificial intelligence programs.
In recent years, there has been an increasing amount of interest in solving complex problems with neural networks. A neural network is a collection of simple processors (nodes) connected together, each processor having a plurality of input and output connections. Each processor evaluates some relatively simple mathematical function of the inputs to produce an output. Some of the processor nodes receive input or produce output external to the network, but typically most connections run between nodes in the network. An adaptive weighting coefficient is associated with each connection. A neural network is trained to solve a particular problem by presenting the network with examples of input data for the problem and the desired outputs. The network adjusts the weighting coefficients to minimize the difference between the output values of the network and the desired output values of the training data. Ideally, a neural network consists of physically separate processor nodes. However, such a network is frequently simulated on a single processor computer system with suitable programming. As used herein, the term "neural network" shall encompass an ideal network of separate physical processors for each node as well as a simulated network executing on a single or other multiple processor computer system.
The promise of neural networks has been that they can be programmed with less programming effort and expertise than conventional application programs designed to solve problems in the field of artificial intelligence. Before a programmer can use neural network technology as part of an otherwise conventional application program, however, a considerable amount of programming effort and neural network expertise is required. Commonly assigned U.S. patent application Ser. No. 07/482,450, filed Feb. 2, 1990, now U.S. Pat. No. 5,142,665 discloses a neural network shell for application programs that eliminates much of the programming effort and neural network expertise required in using neural network technology in an application program. Unfortunately, the neural network shell of this patent application still requires some programming effort and neural network expertise. For example, there are several different neural network models known in the art, such as the Back Propagation Model, the Adaptive Resonance Theory Model, the Self-Organizing Feature Maps Model, the Self-Organizing Routing (TSP) Networks Model, the Constraint Satisfaction Model, and the Learning Vector Quantization Network Model. These models can be quite effective at solving specific types of problems, but are quite ineffective at solving other types of problems. A programmer wishing to develop a neural network would have to possess a considerable amount of knowledge of neural network technology before he would know which neural network model would be most appropriate for solving his specific problem.
A neural network also requires that data be presented to it in a specific, architected form the neural network model understands. The programmer must decide what information is to be used as input and output, along with deciding additional model-dependent information, such as the number of hidden inputs, tasks, resources, or constraints. This decision is very difficult to do without expertise in neural network technology.
It is a primary object of the invention to provide an enhanced neural network shell for application programs.
It is another object of the invention to provide an enhanced neural network shell for application programs that requires little programming effort or neural network expertise.
It is another object of this invention to provide an enhanced neural network shell for application programs that automatically selects an appropriate neural network model.
It is another object of this invention to provide an enhanced neural network shell for application programs that automatically selects an appropriate neural network model based on user input describing the type of problem to be solved.
It is another object of this invention to provide an enhanced neural network shell for application programs that automatically generates an appropriate number of inputs, outputs, and other model-specific parameters for the selected neural network model.
These and other objects are accomplished by the enhanced neural network shell for application programs disclosed herein.
An enhanced neural network shell for application programs is disclosed. The user is prompted to enter in non-technical information about the specific problem type that the user wants solved by a neural network. The user also is prompted to indicate the input data usage information to the neural network. Based on this information, the neural network shell creates a neural network data structure by automatically selecting an appropriate neural network model and automatically generating an appropriate number of inputs, outputs, and/or other model-specific parameters for the selected neural network model. The user is no longer required to have expertise in neural network technology to create a neural network data structure.